package com.huayun.weexutil;

import com.huayun.netutil.net.APIService;
import com.huayun.netutil.net.ProgressSubscriber;
import com.huayun.util.utils.Utils;
import com.taobao.weex.annotation.JSMethod;
import com.taobao.weex.bridge.JSCallback;
import com.taobao.weex.common.WXModule;


import rx.functions.Action1;

/**
 * WXNetModule
 * Created by Queen on 2018/1/4 0004.
 */

public class WXNetModule extends WXModule {
    /**
     * @param methodType 请求的方法名（get、post等）
     * @param url        请求的URL地址
     * @param jsonParams 请求的json类型的参数
     * @param callback   返回的回调
     */
    @JSMethod
    public void requestNetData(String methodType, String url, String api, String jsonParams, boolean showLoading, final JSCallback callback) {
        requestNetDataWithPostType(methodType, url, api, "", jsonParams, showLoading, callback);

    }

    /**
     * @param methodType  请求的方法名（get、post等）
     * @param url         请求的URL地址
     * @param requestType post请求传递参数的类型，以json提交还是format表单提交，取值为"json"/""/"other"
     * @param jsonParams  请求的json类型的参数
     * @param callback    返回的回调
     */
    @JSMethod
    public void requestNetDataWithPostType(String methodType, String url, String api, String requestType, String jsonParams, boolean showLoading, final JSCallback callback) {
        if (methodType.toLowerCase().equals("get")) {
            APIService.getInstance(url, APIService.BACK_STRING_DATA).anyGet(Utils.jsonToMap(jsonParams), new ProgressSubscriber<Object>(new Action1<Object>() {
                @Override
                public void call(Object o) {
                    callback.invokeAndKeepAlive(o.toString());
                }
            }, new Action1<Throwable>() {
                @Override
                public void call(Throwable throwable) {
                    callback.invokeAndKeepAlive(null);
                }
            }, showLoading));
        } else if (methodType.toLowerCase().equals("post")) {
            APIService.getInstance(url, APIService.BACK_STRING_DATA).anyPost(Utils.jsonToMap(jsonParams), api, requestType, new ProgressSubscriber<Object>(new Action1<Object>() {
                @Override
                public void call(Object o) {
                    callback.invokeAndKeepAlive(o.toString());
                }
            }, new Action1<Throwable>() {
                @Override
                public void call(Throwable throwable) {
                    callback.invokeAndKeepAlive(null);
                }
            }, showLoading));
        }

    }
}
